The growth and popularity of computer applications and the Internet is due, in large part, to the vast improvements in the user experience of computers in general. Advances in graphics capabilities, processing speed, and transmission bandwidth have allowed the creation of applications and websites that provide the user rich graphical, interactive, and useful experiences. Graphical development environments (GDEs), such as Adobe Systems Incorporated's FIREWORKS®, PHOTOSHOP®, ILLUSTRATOR®, FREEHAND®, FLASH®, and the like, provide an environment for application and graphics developers to create the graphics for most of the complex graphically-driven applications.
In the development of a graphical application, the author or developer typically uses graphical tools to draw objects that may be later used as repeatable symbols, components, and the like. Generated graphics may comprise vector graphics, which use geometrical primitives such as points, lines, curves, and polygons, that are all based upon mathematical equations, to represent images in computer graphics. Vector graphics are often used because they can typically be moved, scaled, rotated, filled, and the like without degrading the quality of a drawing. Many vector graphics are represented by quadratic Bézier curves, which generally use three control points to define a curve: two end points and a third control point. Other generated graphics may comprise raster objects. A raster object is a digital image or bitmap represented by a data file or structure defining a grid of pixels or points of color on a computer monitor, paper, or other display device. The color of each pixel is typically individually defined. For example, images in the RGB color space often consist of colored pixels defined by three bytes—one byte each for red, green and blue.
When used in an Internet application, the graphic, whether a vector graphic or a raster object, may change sizes to accommodate the screen size of various displays. Therefore, the developer typically designs the graphic to scale as naturally as possible. There are many different methods for allowing for such graphical objects to change sizes and shapes. One such method that has been used in web design is dividing the graphical object into nine sections by slicing it with a grid comprising two sets of perpendicularly intersecting parallel lines. Specific ones of the resulting nine sections of the object are then scaled and/or transformed according to the section of the grid in which they are located. The corner sections of the grid are typically not scaled. The remaining sections are scaled in some manner to achieve the desired transformation of the overall object. Once these remaining sections are scaled the corner sections may be translated as necessary to end up adjacent to the remaining sections of the object. This transformation may include some scaling; however, scaling is rarely performed on the corners. This approach to creating size/shape-variable graphics is generally referred to as “nine slicing,” “nine scaling,” “scale nine,” or “slice nine.” There is a difference when nine scaling a vector object as opposed to a raster object.
Raster graphics are often used in mock-ups or prototypes of different web interfaces for applications and web pages. Therefore, designers often work with such raster objects in the design process. In order to implement nine slice scaling when creating raster graphics, the developer graphically slices the graphic object into the number of smaller objects that facilitate the best scaling. The various segments may be scaled or preserved as necessary to conform to the desired shape, and are then place adjacent to one another to appear as a single graphic again. While this process may provide the desired scaling, it typically takes a great deal of time and effort for each object being scaled and/or transformed. Conventional graphics tools do not provide organized solutions to this problem. Furthermore, the nine slice grid lines need not be symmetrical about any particular axis of the object, which can make any attempt to automate the process highly complex to implement.
Generally, widespread scaling of raster objects is typically undesirable because the scaled graphic generally results in a less-pleasing graphical effect. This is because the magnification of the edges and corners of the object typically become noticeably altered. For example, an object with rounded corners that is magnified in this fashion can result in a “jagged” appearance. Therefore, simply scaling raster objects would actually diminish the user experience making it an undesirable process.